Click here to download the Blitz Browser!

WPT

wpt / url / url-setters-a-area.window.html?exclude=(file|javascript|mailto)

Spec: URL ↗

Runs: Chrome 155.0.8043.0 (wpt@d317428a6, 2026-09-05) | Firefox 157.0a1 (wpt@d317428a6, 2026-09-05) | Safari 251 preview (wpt@c29bd2aee, 2026-09-05) | Ladybird 1.0-62d2b (wpt@6f9e382f6, 2026-09-05) | Servo Servo 0.6 (wpt@2c385f65e, 2026-09-04) | Blitz a50cb8971 (wpt@a95401e4e, 2026-09-03)

View on the Blitz WPT dashboard | Open test on wpt.live | wpt.fyi

ChromeFirefoxSafariLadybirdServoBlitz
Total447/491457/491491/491491/491459/491NOT RUN
SubtestChromeFirefoxSafariLadybirdServoBlitz
Loading data…PASSPASSPASSPASSPASS
<a>: Setting <a://example.net>.protocol = '' The empty string is not a valid scheme. Setter leaves the URL unchanged.PASSPASSPASSPASSPASS
<area>: Setting <a://example.net>.protocol = '' The empty string is not a valid scheme. Setter leaves the URL unchanged.PASSPASSPASSPASSPASS
<a>: Setting <a://example.net>.protocol = 'b'PASSPASSPASSPASSPASS
<area>: Setting <a://example.net>.protocol = 'b'PASSPASSPASSPASSPASS
<a>: Setting <a://example.net>.protocol = 'B' Upper-case ASCII is lower-casedPASSPASSPASSPASSPASS
<area>: Setting <a://example.net>.protocol = 'B' Upper-case ASCII is lower-casedPASSPASSPASSPASSPASS
<a>: Setting <a://example.net>.protocol = 'é' Non-ASCII is rejectedPASSPASSPASSPASSPASS
<area>: Setting <a://example.net>.protocol = 'é' Non-ASCII is rejectedPASSPASSPASSPASSPASS
<a>: Setting <a://example.net>.protocol = '0b' No leading digitPASSPASSPASSPASSPASS
<area>: Setting <a://example.net>.protocol = '0b' No leading digitPASSPASSPASSPASSPASS
<a>: Setting <a://example.net>.protocol = '+b' No leading punctuationPASSPASSPASSPASSPASS
<area>: Setting <a://example.net>.protocol = '+b' No leading punctuationPASSPASSPASSPASSPASS
<a>: Setting <a://example.net>.protocol = 'bC0+-.'PASSPASSPASSPASSPASS
<area>: Setting <a://example.net>.protocol = 'bC0+-.'PASSPASSPASSPASSPASS
<a>: Setting <a://example.net>.protocol = 'b,c' Only some punctuation is acceptablePASSPASSPASSPASSPASS
<area>: Setting <a://example.net>.protocol = 'b,c' Only some punctuation is acceptablePASSPASSPASSPASSPASS
<a>: Setting <a://example.net>.protocol = 'bé' Non-ASCII is rejectedPASSPASSPASSPASSPASS
<area>: Setting <a://example.net>.protocol = 'bé' Non-ASCII is rejectedPASSPASSPASSPASSPASS
<a>: Setting <http://test@example.net>.protocol = 'file' Can’t switch from URL containing username/password/port to filePASSPASSPASSPASSPASS
<area>: Setting <http://test@example.net>.protocol = 'file' Can’t switch from URL containing username/password/port to filePASSPASSPASSPASSPASS
<a>: Setting <https://example.net:1234>.protocol = 'file'PASSPASSPASSPASSPASS
<area>: Setting <https://example.net:1234>.protocol = 'file'PASSPASSPASSPASSPASS
<a>: Setting <wss://x:x@example.net:1234>.protocol = 'file'PASSPASSPASSPASSPASS
<area>: Setting <wss://x:x@example.net:1234>.protocol = 'file'PASSPASSPASSPASSPASS
<a>: Setting <http://example.net>.protocol = 'b' Can’t switch from special scheme to non-specialPASSPASSPASSPASSPASS
<area>: Setting <http://example.net>.protocol = 'b' Can’t switch from special scheme to non-specialPASSPASSPASSPASSPASS
<a>: Setting <https://example.net>.protocol = 's'PASSPASSPASSPASSPASS
<area>: Setting <https://example.net>.protocol = 's'PASSPASSPASSPASSPASS
<a>: Setting <ftp://example.net>.protocol = 'test'PASSPASSPASSPASSPASS
<area>: Setting <ftp://example.net>.protocol = 'test'PASSPASSPASSPASSPASS
<a>: Setting <ssh://me@example.net>.protocol = 'http' Can’t switch from non-special scheme to specialFAILPASSPASSPASSPASS
<area>: Setting <ssh://me@example.net>.protocol = 'http' Can’t switch from non-special scheme to specialFAILPASSPASSPASSPASS
<a>: Setting <ssh://me@example.net>.protocol = 'https'FAILPASSPASSPASSPASS
<area>: Setting <ssh://me@example.net>.protocol = 'https'FAILPASSPASSPASSPASS
<a>: Setting <ssh://me@example.net>.protocol = 'file'FAILPASSPASSPASSPASS
<area>: Setting <ssh://me@example.net>.protocol = 'file'FAILPASSPASSPASSPASS
<a>: Setting <ssh://example.net>.protocol = 'file'FAILPASSPASSPASSPASS
<area>: Setting <ssh://example.net>.protocol = 'file'FAILPASSPASSPASSPASS
<a>: Setting <nonsense:///test>.protocol = 'https'FAILPASSPASSPASSPASS
<area>: Setting <nonsense:///test>.protocol = 'https'FAILPASSPASSPASSPASS
<a>: Setting <http://example.net>.protocol = 'https:foo : bar' Stuff after the first ':' is ignoredPASSPASSPASSPASSPASS
<area>: Setting <http://example.net>.protocol = 'https:foo : bar' Stuff after the first ':' is ignoredPASSPASSPASSPASSPASS
<a>: Setting <data:text/html,<p>Test>.protocol = 'view-source+data:foo : bar' Stuff after the first ':' is ignoredPASSPASSPASSPASSPASS
<area>: Setting <data:text/html,<p>Test>.protocol = 'view-source+data:foo : bar' Stuff after the first ':' is ignoredPASSPASSPASSPASSPASS
<a>: Setting <http://foo.com:443/>.protocol = 'https' Port is set to null if it is the default for new scheme.PASSPASSPASSPASSPASS
<area>: Setting <http://foo.com:443/>.protocol = 'https' Port is set to null if it is the default for new scheme.PASSPASSPASSPASSPASS
<a>: Setting <http://test/>.protocol = 'h tt ps' Tab and newline are strippedFAILPASSPASSPASSPASS
<area>: Setting <http://test/>.protocol = 'h tt ps' Tab and newline are strippedFAILPASSPASSPASSPASS
<a>: Setting <http://test/>.protocol = 'https 'FAILPASSPASSPASSPASS
<area>: Setting <http://test/>.protocol = 'https 'FAILPASSPASSPASSPASS
<a>: Setting <http://test/>.protocol = 'https' Non-tab/newline C0 controls result in no-opPASSPASSPASSPASSPASS
<area>: Setting <http://test/>.protocol = 'https' Non-tab/newline C0 controls result in no-opPASSPASSPASSPASSPASS
<a>: Setting <http://test/>.protocol = 'https 'PASSPASSPASSPASSPASS
<area>: Setting <http://test/>.protocol = 'https 'PASSPASSPASSPASSPASS
<a>: Setting <http://test/>.protocol = 'https'PASSPASSPASSPASSPASS
<area>: Setting <http://test/>.protocol = 'https'PASSPASSPASSPASSPASS
<a>: Setting <http://test/>.protocol = 'https 'PASSPASSPASSPASSPASS
<area>: Setting <http://test/>.protocol = 'https 'PASSPASSPASSPASSPASS
<a>: Setting <unix:/run/foo.socket>.username = 'me' No host means no usernamePASSPASSPASSPASSPASS
<area>: Setting <unix:/run/foo.socket>.username = 'me' No host means no usernamePASSPASSPASSPASSPASS
<a>: Setting <http://example.net>.username = 'me'PASSPASSPASSPASSPASS
<area>: Setting <http://example.net>.username = 'me'PASSPASSPASSPASSPASS
<a>: Setting <http://:secret@example.net>.username = 'me'PASSPASSPASSPASSPASS
<area>: Setting <http://:secret@example.net>.username = 'me'PASSPASSPASSPASSPASS
<a>: Setting <http://me@example.net>.username = ''PASSPASSPASSPASSPASS
<area>: Setting <http://me@example.net>.username = ''PASSPASSPASSPASSPASS
<a>: Setting <http://me:secret@example.net>.username = ''PASSPASSPASSPASSPASS
<area>: Setting <http://me:secret@example.net>.username = ''PASSPASSPASSPASSPASS
<a>: Setting <http://example.net>.username = '  !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' UTF-8 percent encoding with the userinfo encode set.FAILPASSPASSPASSPASS
<area>: Setting <http://example.net>.username = '  !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' UTF-8 percent encoding with the userinfo encode set.FAILPASSPASSPASSPASS
<a>: Setting <http://example.net>.username = '%c3%89té' Bytes already percent-encoded are left as-is.PASSPASSPASSPASSPASS
<area>: Setting <http://example.net>.username = '%c3%89té' Bytes already percent-encoded are left as-is.PASSPASSPASSPASSPASS
<a>: Setting <sc:///>.username = 'x'PASSPASSPASSPASSPASS
<area>: Setting <sc:///>.username = 'x'PASSPASSPASSPASSPASS
<a>: Setting <unix:/run/foo.socket>.password = 'secret' No host means no passwordPASSPASSPASSPASSPASS
<area>: Setting <unix:/run/foo.socket>.password = 'secret' No host means no passwordPASSPASSPASSPASSPASS
<a>: Setting <http://example.net>.password = 'secret'PASSPASSPASSPASSPASS
<area>: Setting <http://example.net>.password = 'secret'PASSPASSPASSPASSPASS
<a>: Setting <http://me@example.net>.password = 'secret'PASSPASSPASSPASSPASS
<area>: Setting <http://me@example.net>.password = 'secret'PASSPASSPASSPASSPASS
<a>: Setting <http://:secret@example.net>.password = ''PASSPASSPASSPASSPASS
<area>: Setting <http://:secret@example.net>.password = ''PASSPASSPASSPASSPASS
<a>: Setting <http://me:secret@example.net>.password = ''PASSPASSPASSPASSPASS
<area>: Setting <http://me:secret@example.net>.password = ''PASSPASSPASSPASSPASS
<a>: Setting <http://example.net>.password = '  !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' UTF-8 percent encoding with the userinfo encode set.FAILPASSPASSPASSPASS
<area>: Setting <http://example.net>.password = '  !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' UTF-8 percent encoding with the userinfo encode set.FAILPASSPASSPASSPASS
<a>: Setting <http://example.net>.password = '%c3%89té' Bytes already percent-encoded are left as-is.PASSPASSPASSPASSPASS
<area>: Setting <http://example.net>.password = '%c3%89té' Bytes already percent-encoded are left as-is.PASSPASSPASSPASSPASS
<a>: Setting <sc:///>.password = 'x'PASSPASSPASSPASSPASS
<area>: Setting <sc:///>.password = 'x'PASSPASSPASSPASSPASS
<a>: Setting <sc://x/>.host = '' Non-special schemePASSPASSPASSPASSPASS
<area>: Setting <sc://x/>.host = '' Non-special schemePASSPASSPASSPASSPASS
<a>: Setting <sc://x/>.host = ' 'PASSPASSPASSPASSPASS
<area>: Setting <sc://x/>.host = ' 'PASSPASSPASSPASSPASS
<a>: Setting <sc://x/>.host = ' 'PASSPASSPASSPASSPASS
<area>: Setting <sc://x/>.host = ' 'PASSPASSPASSPASSPASS
<a>: Setting <sc://x/>.host = ' 'PASSPASSPASSPASSPASS
<area>: Setting <sc://x/>.host = ' 'PASSPASSPASSPASSPASS
<a>: Setting <sc://x/>.host = ' 'PASSPASSPASSPASSPASS
<area>: Setting <sc://x/>.host = ' 'PASSPASSPASSPASSPASS
<a>: Setting <sc://x/>.host = '#'PASSPASSPASSPASSPASS
<area>: Setting <sc://x/>.host = '#'PASSPASSPASSPASSPASS
<a>: Setting <sc://x/>.host = '/'PASSPASSPASSPASSPASS
<area>: Setting <sc://x/>.host = '/'PASSPASSPASSPASSPASS
<a>: Setting <sc://x/>.host = '?'PASSPASSPASSPASSPASS
<area>: Setting <sc://x/>.host = '?'PASSPASSPASSPASSPASS
<a>: Setting <sc://x/>.host = '@'PASSPASSPASSPASSPASS
<area>: Setting <sc://x/>.host = '@'PASSPASSPASSPASSPASS
<a>: Setting <sc://x/>.host = 'ß'PASSPASSPASSPASSPASS
<area>: Setting <sc://x/>.host = 'ß'PASSPASSPASSPASSPASS
<a>: Setting <https://x/>.host = 'ß' IDNA Nontransitional_ProcessingPASSPASSPASSPASSPASS
<area>: Setting <https://x/>.host = 'ß' IDNA Nontransitional_ProcessingPASSPASSPASSPASSPASS
<a>: Setting <data:text/plain,Stuff>.host = 'example.net' Cannot-be-a-base means no hostPASSPASSPASSPASSPASS
<area>: Setting <data:text/plain,Stuff>.host = 'example.net' Cannot-be-a-base means no hostPASSPASSPASSPASSPASS
<a>: Setting <http://example.net>.host = 'example.com:8080'PASSPASSPASSPASSPASS
<area>: Setting <http://example.net>.host = 'example.com:8080'PASSPASSPASSPASSPASS
<a>: Setting <http://example.net:8080>.host = 'example.com' Port number is unchanged if not specified in the new valuePASSPASSPASSPASSPASS
<area>: Setting <http://example.net:8080>.host = 'example.com' Port number is unchanged if not specified in the new valuePASSPASSPASSPASSPASS
<a>: Setting <http://example.net:8080>.host = 'example.com:' Port number is unchanged if not specifiedPASSPASSPASSPASSPASS
<area>: Setting <http://example.net:8080>.host = 'example.com:' Port number is unchanged if not specifiedPASSPASSPASSPASSPASS
<a>: Setting <http://example.net>.host = '' The empty host is not valid for special schemesPASSPASSPASSPASSPASS
<area>: Setting <http://example.net>.host = '' The empty host is not valid for special schemesPASSPASSPASSPASSPASS
<a>: Setting <view-source+http://example.net/foo>.host = '' The empty host is OK for non-special schemesPASSPASSPASSPASSPASS
<area>: Setting <view-source+http://example.net/foo>.host = '' The empty host is OK for non-special schemesPASSPASSPASSPASSPASS
<a>: Setting <a:/foo>.host = 'example.net' Path-only URLs can gain a hostPASSPASSPASSPASSPASS
<area>: Setting <a:/foo>.host = 'example.net' Path-only URLs can gain a hostPASSPASSPASSPASSPASS
<a>: Setting <http://example.net>.host = '0x7F000001:8080' IPv4 address syntax is normalizedPASSPASSPASSPASSPASS
<area>: Setting <http://example.net>.host = '0x7F000001:8080' IPv4 address syntax is normalizedPASSPASSPASSPASSPASS
<a>: Setting <http://example.net>.host = '[::0:01]:2' IPv6 address syntax is normalizedPASSPASSPASSPASSPASS
<area>: Setting <http://example.net>.host = '[::0:01]:2' IPv6 address syntax is normalizedPASSPASSPASSPASSPASS
<a>: Setting <http://example.net>.host = '[2001:db8::2]:4002' IPv6 literal address with port, crbug.com/1012416PASSPASSPASSPASSPASS
<area>: Setting <http://example.net>.host = '[2001:db8::2]:4002' IPv6 literal address with port, crbug.com/1012416PASSPASSPASSPASSPASS
<a>: Setting <http://example.net>.host = 'example.com:80' Default port number is removedPASSPASSPASSPASSPASS
<area>: Setting <http://example.net>.host = 'example.com:80' Default port number is removedPASSPASSPASSPASSPASS
<a>: Setting <https://example.net>.host = 'example.com:443' Default port number is removedPASSPASSPASSPASSPASS
<area>: Setting <https://example.net>.host = 'example.com:443' Default port number is removedPASSPASSPASSPASSPASS
<a>: Setting <https://example.net>.host = 'example.com:80' Default port number is only removed for the relevant schemePASSPASSPASSPASSPASS
<area>: Setting <https://example.net>.host = 'example.com:80' Default port number is only removed for the relevant schemePASSPASSPASSPASSPASS
<a>: Setting <http://example.net:8080>.host = 'example.com:80' Port number is removed if new port is scheme default and existing URL has a non-default portPASSPASSPASSPASSPASS
<area>: Setting <http://example.net:8080>.host = 'example.com:80' Port number is removed if new port is scheme default and existing URL has a non-default portPASSPASSPASSPASSPASS
<a>: Setting <http://example.net/path>.host = 'example.com/stuff' Stuff after a / delimiter is ignoredPASSPASSPASSPASSPASS
<area>: Setting <http://example.net/path>.host = 'example.com/stuff' Stuff after a / delimiter is ignoredPASSPASSPASSPASSPASS
<a>: Setting <http://example.net/path>.host = 'example.com:8080/stuff' Stuff after a / delimiter is ignoredPASSPASSPASSPASSPASS
<area>: Setting <http://example.net/path>.host = 'example.com:8080/stuff' Stuff after a / delimiter is ignoredPASSPASSPASSPASSPASS
<a>: Setting <http://example.net/path>.host = 'example.com?stuff' Stuff after a ? delimiter is ignoredPASSPASSPASSPASSPASS
<area>: Setting <http://example.net/path>.host = 'example.com?stuff' Stuff after a ? delimiter is ignoredPASSPASSPASSPASSPASS
<a>: Setting <http://example.net/path>.host = 'example.com?stuff:8080' Stuff after a ? delimiter is ignored, trailing 'port'PASSPASSPASSPASSPASS
<area>: Setting <http://example.net/path>.host = 'example.com?stuff:8080' Stuff after a ? delimiter is ignored, trailing 'port'PASSPASSPASSPASSPASS
<a>: Setting <http://example.net/path>.host = 'example.com:8080?stuff' Stuff after a ? delimiter is ignoredPASSPASSPASSPASSPASS
<area>: Setting <http://example.net/path>.host = 'example.com:8080?stuff' Stuff after a ? delimiter is ignoredPASSPASSPASSPASSPASS
<a>: Setting <http://example.net/path>.host = 'example.com#stuff' Stuff after a # delimiter is ignoredPASSPASSPASSPASSPASS
<area>: Setting <http://example.net/path>.host = 'example.com#stuff' Stuff after a # delimiter is ignoredPASSPASSPASSPASSPASS
<a>: Setting <http://example.net/path>.host = 'example.com:8080#stuff' Stuff after a # delimiter is ignoredPASSPASSPASSPASSPASS
<area>: Setting <http://example.net/path>.host = 'example.com:8080#stuff' Stuff after a # delimiter is ignoredPASSPASSPASSPASSPASS
<a>: Setting <http://example.net/path>.host = 'example.com\stuff' Stuff after a \ delimiter is ignored for special schemesPASSPASSPASSPASSPASS
<area>: Setting <http://example.net/path>.host = 'example.com\stuff' Stuff after a \ delimiter is ignored for special schemesPASSPASSPASSPASSPASS
<a>: Setting <http://example.net/path>.host = 'example.com:8080\stuff' Stuff after a \ delimiter is ignored for special schemesPASSPASSPASSPASSPASS
<area>: Setting <http://example.net/path>.host = 'example.com:8080\stuff' Stuff after a \ delimiter is ignored for special schemesPASSPASSPASSPASSPASS
<a>: Setting <view-source+http://example.net/path>.host = 'example.com\stuff' \ is not a delimiter for non-special schemes, but still forbidden in hostsPASSPASSPASSPASSPASS
<area>: Setting <view-source+http://example.net/path>.host = 'example.com\stuff' \ is not a delimiter for non-special schemes, but still forbidden in hostsPASSPASSPASSPASSPASS
<a>: Setting <view-source+http://example.net/path>.host = 'example.com:8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an errorPASSPASSPASSPASSPASS
<area>: Setting <view-source+http://example.net/path>.host = 'example.com:8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an errorPASSPASSPASSPASSPASS
<a>: Setting <http://example.net/path>.host = 'example.com:8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an errorPASSPASSPASSPASSPASS
<area>: Setting <http://example.net/path>.host = 'example.com:8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an errorPASSPASSPASSPASSPASS
<a>: Setting <http://example.net/path>.host = 'example.com:8080+2' Anything other than ASCII digit stops the port parser in a setter but is not an errorPASSPASSPASSPASSPASS
<area>: Setting <http://example.net/path>.host = 'example.com:8080+2' Anything other than ASCII digit stops the port parser in a setter but is not an errorPASSPASSPASSPASSPASS
<a>: Setting <http://example.net:8080>.host = 'example.com:invalid' Anything other than ASCII digit stops the port parser in a setter but is not an errorPASSPASSPASSPASSPASS
<area>: Setting <http://example.net:8080>.host = 'example.com:invalid' Anything other than ASCII digit stops the port parser in a setter but is not an errorPASSPASSPASSPASSPASS
<a>: Setting <http://example.net:8080/test>.host = '[::1]:invalid' Anything other than ASCII digit stops the port parser in a setter but is not an errorPASSPASSPASSPASSPASS
<area>: Setting <http://example.net:8080/test>.host = '[::1]:invalid' Anything other than ASCII digit stops the port parser in a setter but is not an errorPASSPASSPASSPASSPASS
<a>: Setting <http://example.net:8080/test>.host = '[::1]' IPv6 without portPASSPASSPASSPASSPASS
<area>: Setting <http://example.net:8080/test>.host = '[::1]' IPv6 without portPASSPASSPASSPASSPASS
<a>: Setting <http://example.net/path>.host = 'example.com:65535' Port numbers are 16 bit integersPASSPASSPASSPASSPASS
<area>: Setting <http://example.net/path>.host = 'example.com:65535' Port numbers are 16 bit integersPASSPASSPASSPASSPASS
<a>: Setting <http://example.net/path>.host = 'example.com:65536' Port numbers are 16 bit integers, overflowing is an error. Hostname is still set, though.PASSPASSPASSPASSPASS
<area>: Setting <http://example.net/path>.host = 'example.com:65536' Port numbers are 16 bit integers, overflowing is an error. Hostname is still set, though.PASSPASSPASSPASSPASS
<a>: Setting <http://example.net/>.host = '[google.com]' Broken IPv6PASSPASSPASSPASSPASS
<area>: Setting <http://example.net/>.host = '[google.com]' Broken IPv6PASSPASSPASSPASSPASS
<a>: Setting <http://example.net/>.host = '[::1.2.3.4x]'PASSPASSPASSPASSPASS
<area>: Setting <http://example.net/>.host = '[::1.2.3.4x]'PASSPASSPASSPASSPASS
<a>: Setting <http://example.net/>.host = '[::1.2.3.]'PASSPASSPASSPASSPASS
<area>: Setting <http://example.net/>.host = '[::1.2.3.]'PASSPASSPASSPASSPASS
<a>: Setting <http://example.net/>.host = '[::1.2.]'PASSPASSPASSPASSPASS
<area>: Setting <http://example.net/>.host = '[::1.2.]'PASSPASSPASSPASSPASS
<a>: Setting <http://example.net/>.host = '[::1.]'PASSPASSPASSPASSPASS
<area>: Setting <http://example.net/>.host = '[::1.]'PASSPASSPASSPASSPASS
<a>: Setting <sc://test@test/>.host = ''PASSPASSPASSPASSPASS
<area>: Setting <sc://test@test/>.host = ''PASSPASSPASSPASSPASS
<a>: Setting <sc://test:12/>.host = ''PASSPASSPASSPASSPASS
<area>: Setting <sc://test:12/>.host = ''PASSPASSPASSPASSPASS
<a>: Setting <http://example.com/>.host = '///bad.com' Leading / is not strippedPASSPASSPASSPASSPASS
<area>: Setting <http://example.com/>.host = '///bad.com' Leading / is not strippedPASSPASSPASSPASSPASS
<a>: Setting <sc://example.com/>.host = '///bad.com' Leading / is not strippedPASSPASSPASSPASSPASS
<area>: Setting <sc://example.com/>.host = '///bad.com' Leading / is not strippedPASSPASSPASSPASSPASS
<a>: Setting <https://example.com/>.host = 'a%C2%ADb'PASSPASSPASSPASSPASS
<area>: Setting <https://example.com/>.host = 'a%C2%ADb'PASSPASSPASSPASSPASS
<a>: Setting <https://example.com/>.host = '­'PASSPASSPASSPASSPASS
<area>: Setting <https://example.com/>.host = '­'PASSPASSPASSPASSPASS
<a>: Setting <https://example.com/>.host = '%C2%AD'PASSPASSPASSPASSPASS
<area>: Setting <https://example.com/>.host = '%C2%AD'PASSPASSPASSPASSPASS
<a>: Setting <https://example.com/>.host = 'xn--'PASSFAILPASSPASSFAIL
<area>: Setting <https://example.com/>.host = 'xn--'PASSFAILPASSPASSFAIL
<a>: Setting <https://test.invalid/>.host = '*'FAILPASSPASSPASSPASS
<area>: Setting <https://test.invalid/>.host = '*'FAILPASSPASSPASSPASS
<a>: Setting <https://test.invalid/>.host = 'x@x'PASSPASSPASSPASSPASS
<area>: Setting <https://test.invalid/>.host = 'x@x'PASSPASSPASSPASSPASS
<a>: Setting <https://test.invalid/>.host = 'foo bar'PASSPASSPASSPASSPASS
<area>: Setting <https://test.invalid/>.host = 'foo bar'PASSPASSPASSPASSPASS
<a>: Setting <https://test.invalid/>.host = '><'PASSPASSPASSPASSPASS
<area>: Setting <https://test.invalid/>.host = '><'PASSPASSPASSPASSPASS
<a>: Setting <https://test.invalid/>.host = 'test/@aaa'PASSPASSPASSPASSPASS
<area>: Setting <https://test.invalid/>.host = 'test/@aaa'PASSPASSPASSPASSPASS
<a>: Setting <https://test.invalid/>.host = 'test/:aaa'PASSPASSPASSPASSPASS
<area>: Setting <https://test.invalid/>.host = 'test/:aaa'PASSPASSPASSPASSPASS
<a>: Setting <foo://path/to>.host = ':80'PASSPASSPASSPASSPASS
<area>: Setting <foo://path/to>.host = ':80'PASSPASSPASSPASSPASS
<a>: Setting <sc://x/>.hostname = '' Non-special schemePASSPASSPASSPASSPASS
<area>: Setting <sc://x/>.hostname = '' Non-special schemePASSPASSPASSPASSPASS
<a>: Setting <sc://x/>.hostname = ' 'PASSPASSPASSPASSPASS
<area>: Setting <sc://x/>.hostname = ' 'PASSPASSPASSPASSPASS
<a>: Setting <sc://x/>.hostname = ' 'PASSPASSPASSPASSPASS
<area>: Setting <sc://x/>.hostname = ' 'PASSPASSPASSPASSPASS
<a>: Setting <sc://x/>.hostname = ' 'PASSPASSPASSPASSPASS
<area>: Setting <sc://x/>.hostname = ' 'PASSPASSPASSPASSPASS
<a>: Setting <sc://x/>.hostname = ' 'PASSPASSPASSPASSPASS
<area>: Setting <sc://x/>.hostname = ' 'PASSPASSPASSPASSPASS
<a>: Setting <sc://x/>.hostname = '#'PASSPASSPASSPASSPASS
<area>: Setting <sc://x/>.hostname = '#'PASSPASSPASSPASSPASS
<a>: Setting <sc://x/>.hostname = '/'PASSPASSPASSPASSPASS
<area>: Setting <sc://x/>.hostname = '/'PASSPASSPASSPASSPASS
<a>: Setting <sc://x/>.hostname = '?'PASSPASSPASSPASSPASS
<area>: Setting <sc://x/>.hostname = '?'PASSPASSPASSPASSPASS
<a>: Setting <sc://x/>.hostname = '@'PASSPASSPASSPASSPASS
<area>: Setting <sc://x/>.hostname = '@'PASSPASSPASSPASSPASS
<a>: Setting <data:text/plain,Stuff>.hostname = 'example.net' Cannot-be-a-base means no hostPASSPASSPASSPASSPASS
<area>: Setting <data:text/plain,Stuff>.hostname = 'example.net' Cannot-be-a-base means no hostPASSPASSPASSPASSPASS
<a>: Setting <http://example.net:8080>.hostname = 'example.com'PASSPASSPASSPASSPASS
<area>: Setting <http://example.net:8080>.hostname = 'example.com'PASSPASSPASSPASSPASS
<a>: Setting <http://example.net>.hostname = '' The empty host is not valid for special schemesPASSPASSPASSPASSPASS
<area>: Setting <http://example.net>.hostname = '' The empty host is not valid for special schemesPASSPASSPASSPASSPASS
<a>: Setting <view-source+http://example.net/foo>.hostname = '' The empty host is OK for non-special schemesPASSPASSPASSPASSPASS
<area>: Setting <view-source+http://example.net/foo>.hostname = '' The empty host is OK for non-special schemesPASSPASSPASSPASSPASS
<a>: Setting <a:/foo>.hostname = 'example.net' Path-only URLs can gain a hostPASSPASSPASSPASSPASS
<area>: Setting <a:/foo>.hostname = 'example.net' Path-only URLs can gain a hostPASSPASSPASSPASSPASS
<a>: Setting <http://example.net:8080>.hostname = '0x7F000001' IPv4 address syntax is normalizedPASSPASSPASSPASSPASS
<area>: Setting <http://example.net:8080>.hostname = '0x7F000001' IPv4 address syntax is normalizedPASSPASSPASSPASSPASS
<a>: Setting <http://example.net>.hostname = '[::0:01]' IPv6 address syntax is normalizedPASSPASSPASSPASSPASS
<area>: Setting <http://example.net>.hostname = '[::0:01]' IPv6 address syntax is normalizedPASSPASSPASSPASSPASS
<a>: Setting <http://example.net/path>.hostname = 'example.com:8080' : delimiter invalidates entire valuePASSPASSPASSPASSPASS
<area>: Setting <http://example.net/path>.hostname = 'example.com:8080' : delimiter invalidates entire valuePASSPASSPASSPASSPASS
<a>: Setting <http://example.net:8080/path>.hostname = 'example.com:' : delimiter invalidates entire valuePASSPASSPASSPASSPASS
<area>: Setting <http://example.net:8080/path>.hostname = 'example.com:' : delimiter invalidates entire valuePASSPASSPASSPASSPASS
<a>: Setting <http://example.net/path>.hostname = 'example.com/stuff' Stuff after a / delimiter is ignoredPASSPASSPASSPASSPASS
<area>: Setting <http://example.net/path>.hostname = 'example.com/stuff' Stuff after a / delimiter is ignoredPASSPASSPASSPASSPASS
<a>: Setting <http://example.net/path>.hostname = 'example.com?stuff' Stuff after a ? delimiter is ignoredPASSPASSPASSPASSPASS
<area>: Setting <http://example.net/path>.hostname = 'example.com?stuff' Stuff after a ? delimiter is ignoredPASSPASSPASSPASSPASS
<a>: Setting <http://example.net/path>.hostname = 'example.com#stuff' Stuff after a # delimiter is ignoredPASSPASSPASSPASSPASS
<area>: Setting <http://example.net/path>.hostname = 'example.com#stuff' Stuff after a # delimiter is ignoredPASSPASSPASSPASSPASS
<a>: Setting <http://example.net/path>.hostname = 'example.com\stuff' Stuff after a \ delimiter is ignored for special schemesPASSPASSPASSPASSPASS
<area>: Setting <http://example.net/path>.hostname = 'example.com\stuff' Stuff after a \ delimiter is ignored for special schemesPASSPASSPASSPASSPASS
<a>: Setting <view-source+http://example.net/path>.hostname = 'example.com\stuff' \ is not a delimiter for non-special schemes, but still forbidden in hostsPASSPASSPASSPASSPASS
<area>: Setting <view-source+http://example.net/path>.hostname = 'example.com\stuff' \ is not a delimiter for non-special schemes, but still forbidden in hostsPASSPASSPASSPASSPASS
<a>: Setting <http://example.net/>.hostname = '[google.com]' Broken IPv6PASSPASSPASSPASSPASS
<area>: Setting <http://example.net/>.hostname = '[google.com]' Broken IPv6PASSPASSPASSPASSPASS
<a>: Setting <http://example.net/>.hostname = '[::1.2.3.4x]'PASSPASSPASSPASSPASS
<area>: Setting <http://example.net/>.hostname = '[::1.2.3.4x]'PASSPASSPASSPASSPASS
<a>: Setting <http://example.net/>.hostname = '[::1.2.3.]'PASSPASSPASSPASSPASS
<area>: Setting <http://example.net/>.hostname = '[::1.2.3.]'PASSPASSPASSPASSPASS
<a>: Setting <http://example.net/>.hostname = '[::1.2.]'PASSPASSPASSPASSPASS
<area>: Setting <http://example.net/>.hostname = '[::1.2.]'PASSPASSPASSPASSPASS
<a>: Setting <http://example.net/>.hostname = '[::1.]'PASSPASSPASSPASSPASS
<area>: Setting <http://example.net/>.hostname = '[::1.]'PASSPASSPASSPASSPASS
<a>: Setting <sc://test@test/>.hostname = ''PASSPASSPASSPASSPASS
<area>: Setting <sc://test@test/>.hostname = ''PASSPASSPASSPASSPASS
<a>: Setting <sc://test:12/>.hostname = ''PASSPASSPASSPASSPASS
<area>: Setting <sc://test:12/>.hostname = ''PASSPASSPASSPASSPASS
<a>: Setting <non-spec:/.//p>.hostname = 'h' Drop /. from pathPASSPASSPASSPASSPASS
<area>: Setting <non-spec:/.//p>.hostname = 'h' Drop /. from pathPASSPASSPASSPASSPASS
<a>: Setting <non-spec:/.//p>.hostname = ''PASSPASSPASSPASSPASS
<area>: Setting <non-spec:/.//p>.hostname = ''PASSPASSPASSPASSPASS
<a>: Setting <http://example.com/>.hostname = '///bad.com' Leading / is not strippedPASSPASSPASSPASSPASS
<area>: Setting <http://example.com/>.hostname = '///bad.com' Leading / is not strippedPASSPASSPASSPASSPASS
<a>: Setting <sc://example.com/>.hostname = '///bad.com' Leading / is not strippedPASSPASSPASSPASSPASS
<area>: Setting <sc://example.com/>.hostname = '///bad.com' Leading / is not strippedPASSPASSPASSPASSPASS
<a>: Setting <https://example.com/>.hostname = 'a%C2%ADb'PASSPASSPASSPASSPASS
<area>: Setting <https://example.com/>.hostname = 'a%C2%ADb'PASSPASSPASSPASSPASS
<a>: Setting <https://example.com/>.hostname = '­'PASSPASSPASSPASSPASS
<area>: Setting <https://example.com/>.hostname = '­'PASSPASSPASSPASSPASS
<a>: Setting <https://example.com/>.hostname = '%C2%AD'PASSPASSPASSPASSPASS
<area>: Setting <https://example.com/>.hostname = '%C2%AD'PASSPASSPASSPASSPASS
<a>: Setting <https://example.com/>.hostname = 'xn--'PASSFAILPASSPASSFAIL
<area>: Setting <https://example.com/>.hostname = 'xn--'PASSFAILPASSPASSFAIL
<a>: Setting <https://test.invalid/>.hostname = '*'FAILPASSPASSPASSPASS
<area>: Setting <https://test.invalid/>.hostname = '*'FAILPASSPASSPASSPASS
<a>: Setting <https://test.invalid/>.hostname = 'x@x'PASSPASSPASSPASSPASS
<area>: Setting <https://test.invalid/>.hostname = 'x@x'PASSPASSPASSPASSPASS
<a>: Setting <https://test.invalid/>.hostname = 'foo bar'PASSPASSPASSPASSPASS
<area>: Setting <https://test.invalid/>.hostname = 'foo bar'PASSPASSPASSPASSPASS
<a>: Setting <https://test.invalid/>.hostname = '><'PASSPASSPASSPASSPASS
<area>: Setting <https://test.invalid/>.hostname = '><'PASSPASSPASSPASSPASS
<a>: Setting <https://test.invalid/>.hostname = 'test/@aaa'PASSPASSPASSPASSPASS
<area>: Setting <https://test.invalid/>.hostname = 'test/@aaa'PASSPASSPASSPASSPASS
<a>: Setting <https://test.invalid/>.hostname = 'test/:aaa'PASSPASSPASSPASSPASS
<area>: Setting <https://test.invalid/>.hostname = 'test/:aaa'PASSPASSPASSPASSPASS
<a>: Setting <http://example.net>.port = '8080'PASSPASSPASSPASSPASS
<area>: Setting <http://example.net>.port = '8080'PASSPASSPASSPASSPASS
<a>: Setting <http://example.net:8080>.port = '' Port number is removed if empty is the new valuePASSPASSPASSPASSPASS
<area>: Setting <http://example.net:8080>.port = '' Port number is removed if empty is the new valuePASSPASSPASSPASSPASS
<a>: Setting <http://example.net:8080>.port = '80' Default port number is removedPASSPASSPASSPASSPASS
<area>: Setting <http://example.net:8080>.port = '80' Default port number is removedPASSPASSPASSPASSPASS
<a>: Setting <https://example.net:4433>.port = '443' Default port number is removedPASSPASSPASSPASSPASS
<area>: Setting <https://example.net:4433>.port = '443' Default port number is removedPASSPASSPASSPASSPASS
<a>: Setting <https://example.net>.port = '80' Default port number is only removed for the relevant schemePASSPASSPASSPASSPASS
<area>: Setting <https://example.net>.port = '80' Default port number is only removed for the relevant schemePASSPASSPASSPASSPASS
<a>: Setting <http://example.net/path>.port = '8080/stuff' Stuff after a / delimiter is ignoredPASSPASSPASSPASSPASS
<area>: Setting <http://example.net/path>.port = '8080/stuff' Stuff after a / delimiter is ignoredPASSPASSPASSPASSPASS
<a>: Setting <http://example.net/path>.port = '8080?stuff' Stuff after a ? delimiter is ignoredPASSPASSPASSPASSPASS
<area>: Setting <http://example.net/path>.port = '8080?stuff' Stuff after a ? delimiter is ignoredPASSPASSPASSPASSPASS
<a>: Setting <http://example.net/path>.port = '8080#stuff' Stuff after a # delimiter is ignoredPASSPASSPASSPASSPASS
<area>: Setting <http://example.net/path>.port = '8080#stuff' Stuff after a # delimiter is ignoredPASSPASSPASSPASSPASS
<a>: Setting <http://example.net/path>.port = '8080\stuff' Stuff after a \ delimiter is ignored for special schemesPASSPASSPASSPASSPASS
<area>: Setting <http://example.net/path>.port = '8080\stuff' Stuff after a \ delimiter is ignored for special schemesPASSPASSPASSPASSPASS
<a>: Setting <view-source+http://example.net/path>.port = '8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an errorPASSPASSPASSPASSPASS
<area>: Setting <view-source+http://example.net/path>.port = '8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an errorPASSPASSPASSPASSPASS
<a>: Setting <http://example.net/path>.port = '8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an errorPASSPASSPASSPASSPASS
<area>: Setting <http://example.net/path>.port = '8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an errorPASSPASSPASSPASSPASS
<a>: Setting <http://example.net/path>.port = '8080+2' Anything other than ASCII digit stops the port parser in a setter but is not an errorPASSPASSPASSPASSPASS
<area>: Setting <http://example.net/path>.port = '8080+2' Anything other than ASCII digit stops the port parser in a setter but is not an errorPASSPASSPASSPASSPASS
<a>: Setting <http://example.net/path>.port = '65535' Port numbers are 16 bit integersPASSPASSPASSPASSPASS
<area>: Setting <http://example.net/path>.port = '65535' Port numbers are 16 bit integersPASSPASSPASSPASSPASS
<a>: Setting <http://example.net:8080/path>.port = '65536' Port numbers are 16 bit integers, overflowing is an errorPASSPASSPASSPASSPASS
<area>: Setting <http://example.net:8080/path>.port = '65536' Port numbers are 16 bit integers, overflowing is an errorPASSPASSPASSPASSPASS
<a>: Setting <http://example.net:8080/path>.port = 'randomstring' Setting port to a string that doesn't parse as a numberPASSPASSPASSPASSPASS
<area>: Setting <http://example.net:8080/path>.port = 'randomstring' Setting port to a string that doesn't parse as a numberPASSPASSPASSPASSPASS
<a>: Setting <non-special://example.net:8080/path>.port = '65536' Port numbers are 16 bit integers, overflowing is an errorPASSPASSPASSPASSPASS
<area>: Setting <non-special://example.net:8080/path>.port = '65536' Port numbers are 16 bit integers, overflowing is an errorPASSPASSPASSPASSPASS
<a>: Setting <non-base:value>.port = '12'PASSPASSPASSPASSPASS
<area>: Setting <non-base:value>.port = '12'PASSPASSPASSPASSPASS
<a>: Setting <sc:///>.port = '12'PASSPASSPASSPASSPASS
<area>: Setting <sc:///>.port = '12'PASSPASSPASSPASSPASS
<a>: Setting <sc://x/>.port = '12'PASSPASSPASSPASSPASS
<area>: Setting <sc://x/>.port = '12'PASSPASSPASSPASSPASS
<a>: Setting <https://domain.com:443>.port = ' 8080' Leading u0009 on special schemePASSPASSPASSPASSPASS
<area>: Setting <https://domain.com:443>.port = ' 8080' Leading u0009 on special schemePASSPASSPASSPASSPASS
<a>: Setting <wpt++://domain.com:443>.port = ' 8080' Leading u0009 on non-special schemePASSPASSPASSPASSPASS
<area>: Setting <wpt++://domain.com:443>.port = ' 8080' Leading u0009 on non-special schemePASSPASSPASSPASSPASS
<a>: Setting <https://www.google.com:4343>.port = '4wpt' Should use all ascii prefixed characters as portPASSPASSPASSPASSPASS
<area>: Setting <https://www.google.com:4343>.port = '4wpt' Should use all ascii prefixed characters as portPASSPASSPASSPASSPASS
<a>: Setting <https://domain.com:3000>.port = ' 80 80 'PASSFAILPASSPASSPASS
<area>: Setting <https://domain.com:3000>.port = ' 80 80 'PASSFAILPASSPASSPASS
<a>: Setting <https://domain.com:3000>.port = ' 'PASSPASSPASSPASSFAIL
<area>: Setting <https://domain.com:3000>.port = ' 'PASSPASSPASSPASSFAIL
<a>: Setting <data:original>.pathname = 'new value'PASSPASSPASSPASSPASS
<area>: Setting <data:original>.pathname = 'new value'PASSPASSPASSPASSPASS
<a>: Setting <sc:original>.pathname = 'new value'PASSPASSPASSPASSPASS
<area>: Setting <sc:original>.pathname = 'new value'PASSPASSPASSPASSPASS
<a>: Setting <foo://somehost/some/path>.pathname = '' Non-special URLs can have their paths erasedPASSPASSPASSPASSPASS
<area>: Setting <foo://somehost/some/path>.pathname = '' Non-special URLs can have their paths erasedPASSPASSPASSPASSPASS
<a>: Setting <foo:///some/path>.pathname = '' Non-special URLs with an empty host can have their paths erasedPASSFAILPASSPASSFAIL
<area>: Setting <foo:///some/path>.pathname = '' Non-special URLs with an empty host can have their paths erasedPASSFAILPASSPASSFAIL
<a>: Setting <foo:/some/path>.pathname = '' Path-only URLs cannot have their paths erasedPASSPASSPASSPASSPASS
<area>: Setting <foo:/some/path>.pathname = '' Path-only URLs cannot have their paths erasedPASSPASSPASSPASSPASS
<a>: Setting <foo:/some/path>.pathname = 'test' Path-only URLs always have an initial slashPASSPASSPASSPASSPASS
<area>: Setting <foo:/some/path>.pathname = 'test' Path-only URLs always have an initial slashPASSPASSPASSPASSPASS
<a>: Setting <unix:/run/foo.socket?timeout=10>.pathname = '/var/log/../run/bar.socket'PASSPASSPASSPASSPASS
<area>: Setting <unix:/run/foo.socket?timeout=10>.pathname = '/var/log/../run/bar.socket'PASSPASSPASSPASSPASS
<a>: Setting <https://example.net#nav>.pathname = 'home'PASSPASSPASSPASSPASS
<area>: Setting <https://example.net#nav>.pathname = 'home'PASSPASSPASSPASSPASS
<a>: Setting <https://example.net#nav>.pathname = '../home'PASSPASSPASSPASSPASS
<area>: Setting <https://example.net#nav>.pathname = '../home'PASSPASSPASSPASSPASS
<a>: Setting <http://example.net/home?lang=fr#nav>.pathname = '\a\%2E\b\%2e.\c' \ is a segment delimiter for 'special' URLsPASSPASSPASSPASSPASS
<area>: Setting <http://example.net/home?lang=fr#nav>.pathname = '\a\%2E\b\%2e.\c' \ is a segment delimiter for 'special' URLsPASSPASSPASSPASSPASS
<a>: Setting <view-source+http://example.net/home?lang=fr#nav>.pathname = '\a\%2E\b\%2e.\c' \ is *not* a segment delimiter for non-'special' URLsPASSPASSPASSPASSPASS
<area>: Setting <view-source+http://example.net/home?lang=fr#nav>.pathname = '\a\%2E\b\%2e.\c' \ is *not* a segment delimiter for non-'special' URLsPASSPASSPASSPASSPASS
<a>: Setting <a:/>.pathname = '  !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' UTF-8 percent encoding with the default encode set. Tabs and newlines are removed.FAILFAILPASSPASSFAIL
<area>: Setting <a:/>.pathname = '  !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' UTF-8 percent encoding with the default encode set. Tabs and newlines are removed.FAILFAILPASSPASSFAIL
<a>: Setting <http://example.net>.pathname = '%2e%2E%c3%89té' Bytes already percent-encoded are left as-is, including %2E outside dotted segments.PASSPASSPASSPASSPASS
<area>: Setting <http://example.net>.pathname = '%2e%2E%c3%89té' Bytes already percent-encoded are left as-is, including %2E outside dotted segments.PASSPASSPASSPASSPASS
<a>: Setting <http://example.net>.pathname = '?' ? needs to be encodedPASSPASSPASSPASSPASS
<area>: Setting <http://example.net>.pathname = '?' ? needs to be encodedPASSPASSPASSPASSPASS
<a>: Setting <http://example.net>.pathname = '#' # needs to be encodedPASSPASSPASSPASSPASS
<area>: Setting <http://example.net>.pathname = '#' # needs to be encodedPASSPASSPASSPASSPASS
<a>: Setting <sc://example.net>.pathname = '?' ? needs to be encoded, non-special schemePASSPASSPASSPASSPASS
<area>: Setting <sc://example.net>.pathname = '?' ? needs to be encoded, non-special schemePASSPASSPASSPASSPASS
<a>: Setting <sc://example.net>.pathname = '#' # needs to be encoded, non-special schemePASSPASSPASSPASSPASS
<area>: Setting <sc://example.net>.pathname = '#' # needs to be encoded, non-special schemePASSPASSPASSPASSPASS
<a>: Setting <http://example.net>.pathname = '/?é' ? doesn't mess up encodingPASSPASSPASSPASSPASS
<area>: Setting <http://example.net>.pathname = '/?é' ? doesn't mess up encodingPASSPASSPASSPASSPASS
<a>: Setting <http://example.net>.pathname = '/#é' # doesn't mess up encodingPASSPASSPASSPASSPASS
<area>: Setting <http://example.net>.pathname = '/#é' # doesn't mess up encodingPASSPASSPASSPASSPASS
<a>: Setting <non-spec:/>.pathname = '/.//p' Serialize /. in pathPASSFAILPASSPASSFAIL
<area>: Setting <non-spec:/>.pathname = '/.//p' Serialize /. in pathPASSFAILPASSPASSFAIL
<a>: Setting <non-spec:/>.pathname = '/..//p'PASSFAILPASSPASSFAIL
<area>: Setting <non-spec:/>.pathname = '/..//p'PASSFAILPASSPASSFAIL
<a>: Setting <non-spec:/>.pathname = '//p'PASSFAILPASSPASSFAIL
<area>: Setting <non-spec:/>.pathname = '//p'PASSFAILPASSPASSFAIL
<a>: Setting <non-spec:/.//>.pathname = 'p' Drop /. from pathPASSPASSPASSPASSPASS
<area>: Setting <non-spec:/.//>.pathname = 'p' Drop /. from pathPASSPASSPASSPASSPASS
<a>: Setting <data:/nospace>.pathname = 'space ' Non-special URLs with non-opaque paths percent-encode U+0020PASSFAILPASSPASSPASS
<area>: Setting <data:/nospace>.pathname = 'space ' Non-special URLs with non-opaque paths percent-encode U+0020PASSFAILPASSPASSPASS
<a>: Setting <sc:/nospace>.pathname = 'space 'PASSPASSPASSPASSPASS
<area>: Setting <sc:/nospace>.pathname = 'space 'PASSPASSPASSPASSPASS
<a>: Setting <http://example.net>.pathname = ' ' Trailing space should be encodedPASSPASSPASSPASSPASS
<area>: Setting <http://example.net>.pathname = ' ' Trailing space should be encodedPASSPASSPASSPASSPASS
<a>: Setting <http://example.net>.pathname = '' Trailing C0 control should be encodedPASSPASSPASSPASSPASS
<area>: Setting <http://example.net>.pathname = '' Trailing C0 control should be encodedPASSPASSPASSPASSPASS
<a>: Setting <foo://path/to>.pathname = '/..'PASSPASSPASSPASSPASS
<area>: Setting <foo://path/to>.pathname = '/..'PASSPASSPASSPASSPASS
<a>: Setting <https://example.net#nav>.search = 'lang=fr'PASSPASSPASSPASSPASS
<area>: Setting <https://example.net#nav>.search = 'lang=fr'PASSPASSPASSPASSPASS
<a>: Setting <https://example.net?lang=en-US#nav>.search = 'lang=fr'PASSPASSPASSPASSPASS
<area>: Setting <https://example.net?lang=en-US#nav>.search = 'lang=fr'PASSPASSPASSPASSPASS
<a>: Setting <https://example.net?lang=en-US#nav>.search = '?lang=fr'PASSPASSPASSPASSPASS
<area>: Setting <https://example.net?lang=en-US#nav>.search = '?lang=fr'PASSPASSPASSPASSPASS
<a>: Setting <https://example.net?lang=en-US#nav>.search = '??lang=fr'PASSPASSPASSPASSPASS
<area>: Setting <https://example.net?lang=en-US#nav>.search = '??lang=fr'PASSPASSPASSPASSPASS
<a>: Setting <https://example.net?lang=en-US#nav>.search = '?'FAILPASSPASSPASSPASS
<area>: Setting <https://example.net?lang=en-US#nav>.search = '?'FAILPASSPASSPASSPASS
<a>: Setting <https://example.net?lang=en-US#nav>.search = ''PASSPASSPASSPASSPASS
<area>: Setting <https://example.net?lang=en-US#nav>.search = ''PASSPASSPASSPASSPASS
<a>: Setting <https://example.net?lang=en-US>.search = ''PASSPASSPASSPASSPASS
<area>: Setting <https://example.net?lang=en-US>.search = ''PASSPASSPASSPASSPASS
<a>: Setting <https://example.net>.search = ''PASSPASSPASSPASSPASS
<area>: Setting <https://example.net>.search = ''PASSPASSPASSPASSPASS
<a>: Setting <a:/>.search = '  !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' UTF-8 percent encoding with the query encode set. Tabs and newlines are removed.FAILPASSPASSPASSPASS
<area>: Setting <a:/>.search = '  !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' UTF-8 percent encoding with the query encode set. Tabs and newlines are removed.FAILPASSPASSPASSPASS
<a>: Setting <http://example.net>.search = '%c3%89té' Bytes already percent-encoded are left as-isPASSPASSPASSPASSPASS
<area>: Setting <http://example.net>.search = '%c3%89té' Bytes already percent-encoded are left as-isPASSPASSPASSPASSPASS
<a>: Setting <data:space ?query>.search = '' Trailing spaces and opaque pathsFAILFAILPASSPASSFAIL
<area>: Setting <data:space ?query>.search = '' Trailing spaces and opaque pathsFAILFAILPASSPASSFAIL
<a>: Setting <sc:space ?query>.search = ''FAILFAILPASSPASSFAIL
<area>: Setting <sc:space ?query>.search = ''FAILFAILPASSPASSFAIL
<a>: Setting <data:space ?query#fragment>.search = '' Trailing spaces and opaque pathsFAILFAILPASSPASSFAIL
<area>: Setting <data:space ?query#fragment>.search = '' Trailing spaces and opaque pathsFAILFAILPASSPASSFAIL
<a>: Setting <sc:space ?query#fragment>.search = ''FAILFAILPASSPASSFAIL
<area>: Setting <sc:space ?query#fragment>.search = ''FAILFAILPASSPASSFAIL
<a>: Setting <http://example.net>.search = ' ' Trailing space should be encodedPASSPASSPASSPASSPASS
<area>: Setting <http://example.net>.search = ' ' Trailing space should be encodedPASSPASSPASSPASSPASS
<a>: Setting <http://example.net>.search = '' Trailing C0 control should be encodedPASSPASSPASSPASSPASS
<area>: Setting <http://example.net>.search = '' Trailing C0 control should be encodedPASSPASSPASSPASSPASS
<a>: Setting <https://example.net>.hash = 'main'PASSPASSPASSPASSPASS
<area>: Setting <https://example.net>.hash = 'main'PASSPASSPASSPASSPASS
<a>: Setting <https://example.net#nav>.hash = 'main'PASSPASSPASSPASSPASS
<area>: Setting <https://example.net#nav>.hash = 'main'PASSPASSPASSPASSPASS
<a>: Setting <https://example.net?lang=en-US>.hash = '##nav'PASSPASSPASSPASSPASS
<area>: Setting <https://example.net?lang=en-US>.hash = '##nav'PASSPASSPASSPASSPASS
<a>: Setting <https://example.net?lang=en-US#nav>.hash = '#main'PASSPASSPASSPASSPASS
<area>: Setting <https://example.net?lang=en-US#nav>.hash = '#main'PASSPASSPASSPASSPASS
<a>: Setting <https://example.net?lang=en-US#nav>.hash = '#'PASSPASSPASSPASSPASS
<area>: Setting <https://example.net?lang=en-US#nav>.hash = '#'PASSPASSPASSPASSPASS
<a>: Setting <https://example.net?lang=en-US#nav>.hash = ''PASSPASSPASSPASSPASS
<area>: Setting <https://example.net?lang=en-US#nav>.hash = ''PASSPASSPASSPASSPASS
<a>: Setting <http://example.net>.hash = '#foo bar'PASSPASSPASSPASSPASS
<area>: Setting <http://example.net>.hash = '#foo bar'PASSPASSPASSPASSPASS
<a>: Setting <http://example.net>.hash = '#foo"bar'PASSPASSPASSPASSPASS
<area>: Setting <http://example.net>.hash = '#foo"bar'PASSPASSPASSPASSPASS
<a>: Setting <http://example.net>.hash = '#foo<bar'PASSPASSPASSPASSPASS
<area>: Setting <http://example.net>.hash = '#foo<bar'PASSPASSPASSPASSPASS
<a>: Setting <http://example.net>.hash = '#foo>bar'PASSPASSPASSPASSPASS
<area>: Setting <http://example.net>.hash = '#foo>bar'PASSPASSPASSPASSPASS
<a>: Setting <http://example.net>.hash = '#foo`bar'PASSPASSPASSPASSPASS
<area>: Setting <http://example.net>.hash = '#foo`bar'PASSPASSPASSPASSPASS
<a>: Setting <a:/>.hash = '  !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' Simple percent-encoding; tabs and newlines are removedPASSPASSPASSPASSPASS
<area>: Setting <a:/>.hash = '  !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' Simple percent-encoding; tabs and newlines are removedPASSPASSPASSPASSPASS
<a>: Setting <http://example.net>.hash = 'ab' Percent-encode NULLs in fragmentPASSPASSPASSPASSPASS
<area>: Setting <http://example.net>.hash = 'ab' Percent-encode NULLs in fragmentPASSPASSPASSPASSPASS
<a>: Setting <non-spec:/>.hash = 'ab' Percent-encode NULLs in fragmentPASSPASSPASSPASSPASS
<area>: Setting <non-spec:/>.hash = 'ab' Percent-encode NULLs in fragmentPASSPASSPASSPASSPASS
<a>: Setting <http://example.net>.hash = '%c3%89té' Bytes already percent-encoded are left as-isPASSPASSPASSPASSPASS
<area>: Setting <http://example.net>.hash = '%c3%89té' Bytes already percent-encoded are left as-isPASSPASSPASSPASSPASS
<a>: Setting <data:space #fragment>.hash = '' Trailing spaces and opaque pathsFAILFAILPASSPASSFAIL
<area>: Setting <data:space #fragment>.hash = '' Trailing spaces and opaque pathsFAILFAILPASSPASSFAIL
<a>: Setting <sc:space #fragment>.hash = ''FAILFAILPASSPASSFAIL
<area>: Setting <sc:space #fragment>.hash = ''FAILFAILPASSPASSFAIL
<a>: Setting <data:space ?query#fragment>.hash = '' Trailing spaces and opaque pathsFAILFAILPASSPASSFAIL
<area>: Setting <data:space ?query#fragment>.hash = '' Trailing spaces and opaque pathsFAILFAILPASSPASSFAIL
<a>: Setting <sc:space ?query#fragment>.hash = ''FAILFAILPASSPASSFAIL
<area>: Setting <sc:space ?query#fragment>.hash = ''FAILFAILPASSPASSFAIL
<a>: Setting <http://example.net>.hash = ' ' Trailing space should be encodedPASSPASSPASSPASSPASS
<area>: Setting <http://example.net>.hash = ' ' Trailing space should be encodedPASSPASSPASSPASSPASS
<a>: Setting <http://example.net>.hash = '' Trailing C0 control should be encodedPASSPASSPASSPASSPASS
<area>: Setting <http://example.net>.hash = '' Trailing C0 control should be encodedPASSPASSPASSPASSPASS
<a>: Setting <data:text/plain,test>.hash = '#<foo> <bar>' Fragment with <> on data: URIPASSPASSPASSPASSPASS
<area>: Setting <data:text/plain,test>.hash = '#<foo> <bar>' Fragment with <> on data: URIPASSPASSPASSPASSPASS
<a>: Setting <about:blank>.hash = '#<foo> <bar>' Fragment with <> on about:blankPASSPASSPASSPASSPASS
<area>: Setting <about:blank>.hash = '#<foo> <bar>' Fragment with <> on about:blankPASSPASSPASSPASSPASS
<a>: Setting <data:text/plain,test>.hash = '#  !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' Fragment percent-encode set on data: URI; tabs and newlines are removedPASSPASSPASSPASSPASS
<area>: Setting <data:text/plain,test>.hash = '#  !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' Fragment percent-encode set on data: URI; tabs and newlines are removedPASSPASSPASSPASSPASS
<a>: Setting <about:blank>.hash = '#  !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' Fragment percent-encode set on about:blank; tabs and newlines are removedPASSPASSPASSPASSPASS
<area>: Setting <about:blank>.hash = '#  !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé' Fragment percent-encode set on about:blank; tabs and newlines are removedPASSPASSPASSPASSPASS